// 收货地址编辑页面
import {saveAddress,deleteAddress} from '../../../api/addressMangerAPI'

//获取地图插件对象
const chooseLocation = requirePlugin('chooseLocation');
Page({
  /**
   * 页面的初始数据
   */
  data: {
    addressItem: {
    },
    showDelete:false
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    console.log("收货地址页面收到的参数:", options);
    if (options.address !== "undefined") {
      console.log("点击编辑按钮进入的编辑页面---------------------");
      let address= JSON.parse(options.address)
      this.setData({
        addressItem: address,
        showDelete:address.name!==undefined
      })
    }else{
      console.log("点击添加收货地址进入的编辑页面------------------");
    }
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    const location = chooseLocation.getLocation()
    //如果在插件中选择了地址,返回选择的地址,如果没有选择返回null
    console.log("选择的地址:", typeof location, location);
    if (location !== null) {
      //将选择的地址赋值给当前地址对象
      this.setData({
        'addressItem.localtion':location
      })
    }
    console.log("测试----------",this.data.addressItem.localtion);
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    // 页面卸载时设置插件选点数据为null，防止再次进入页面，geLocation返回的是上次选点结果
    chooseLocation.setLocation(null);
  },
  /**
   * 进入地图
   */
  handleOpenMap() {
    console.log("打开地图组件,选择地址------------");
    const thisRef=this
    console.log(thisRef.data);
    //打开地图插件前检查是否授权
    wx.getSetting({
      withSubscriptions: false,
      success: function (ref) {
        console.log("授权结果:", ref, ref.authSetting['scope.userLocation'], typeof ref.authSetting['scope.userLocation']);
        if (ref.authSetting['scope.userLocation'] === false) {
          //如果手动关闭了授权,引导用户到设置页面设置
          console.log("用户关闭了位置信息授权");
          wx.showModal({
            content: "请授权地理位置,否则无法为您服务",
            cancelText: "暂不开启",
            confirmText: "开启授权",
            confirmColor: "red",
            success: function (ref) {
              console.log(ref);
              //点击确定,跳转到设置页面
              if (ref.confirm) {
                wx.openSetting({
                  withSubscriptions: true,
                })
              }
            }
          })
        } else {
          //如果已经授权或者第一次进入还没有授权信息,进入插件
          console.log("进入地图插件");
          //下面使用地图插件选择地址
          const key = 'UYXBZ-CACKI-SPXGF-5CJZ7-KEYJQ-NJFO4'; //使用在腾讯位置服务申请的key
          const referer = '天天买菜'; //调用插件的app的名称
          const category = '生活服务,娱乐休闲';
          console.log("进入地图的定位地点----------------",thisRef.data.addressItem.localtion);
          let url;
          let tempLocation=thisRef.data.addressItem.localtion
          if (tempLocation) {
            console.log("进入地图前有经纬度============");
            const location = JSON.stringify({
              latitude: tempLocation.latitude,
              longitude: tempLocation.longitude
            });
            url=`plugin://chooseLocation/index?key=${key}&referer=${referer}&location=${location}&category=${category}`
          }else{
            console.log("进入地图前没有经纬度+++++++++++++++");
            url=`plugin://chooseLocation/index?key=${key}&referer=${referer}&category=${category}`
          }
          //初始经纬度,如果没有初始经纬度,则默认定位到当前真实定位地址
          wx.navigateTo({
            url: url,
          });
        }
      }
    })
  },
  /**
   * 选择性别
   * @param {e} e 
   */
  handleChooseSex(e) {
    console.log("性别改变了:", e.currentTarget.dataset.value);
    this.setData({
      'addressItem.sex':  e.currentTarget.dataset.value
    })
  },
  /**
   * 选择标签
   * @param {e} e 
   */
  selectLabel(e) {
    let temLabel = e.currentTarget.dataset.label
    console.log("选中了标签:", temLabel);
    //如果点击的是当前标签,则将当前标签赋为空
    if (temLabel === this.data.addressItem.label) {
      console.log("选中了当前标签");
      this.setData({
        'addressItem.label': ""
      })
    } else {
      console.log("没有选中当前标签");
      this.setData({
        'addressItem.label': temLabel
      })
    }
    //如果点击的不是当前的标签,则将当前标签修改为点击的标签
  },
  /**
   * 修改门牌号
   * @param {Object} e 事件对象
   */
  changeHouseNum(e) {
    console.log("修改门牌号,新的门牌号是:", e.detail);
    this.data.addressItem.houseNum = e.detail
  },
  /**
   * 修改或输入收货人姓名
   * @param {e} e 
   */
  changeName(e){
    console.log("修改联系人姓名,新名字是:", e.detail.value);
    let name=e.detail.value
    if (name.length>10) {
      wx.showToast({       
        title: '收货人姓名的长度最多10位',
        icon:'none'
      })
      return
    }
    this.setData({
      'addressItem.name': e.detail.value
    })
  },
  /**
   * 输入手机号
   * @param {e} e 
   */
  checkPhone(e){
    console.log("修改联系人手机号,新手机号是:", e.detail.value);
    let phone=e.detail.value
    if (/1[3-9]\d{9}/.test(phone)) {
      this.setData({
        'addressItem.phone': phone
      })
    }else{
      this.setData({
        'addressItem.phone':""
      })
      wx.showToast({
        title: '请输入正确的手机号',
        icon:'none'
      })
    }
  },
  /**
   *  改变手机号
   * @param {e} e 事件对象
   */
  changePhone(e){
    console.log("输入的手机号变了:",e);
    this.setData({
      'addressItem.phone':e.detail
    })
  },
  /**
   * 保存收货地址(包括修改收货地址)
   */
  handleSave() {
    console.log("要保存的收货地址信息:",this.data.addressItem);
    //判断收货地址信息不能有空白信息
    let add=this.data.addressItem
    if (!add.localtion) {
      wx.showToast({
        title: '请选择地址',
        icon:'none'
      })
      return
    }
    if (!add.houseNum) {
      wx.showToast({
        title: '请输入门牌号',
        icon:'none'
      })
      return
    }
    if (!add.name) {
      wx.showToast({
        title: '请输入联系人姓名',
        icon:'none'
      })
      return
    }
    if (!add.phone) {
      wx.showToast({
        title: '请输入收货人手机号',
        icon:'none'
      })
      return
    }
    saveAddress(this.data.addressItem).then((res)=>{
        console.log("保存收货地址结果:",res);
        if (res.code===2000) {
          console.log("保存收货地址成功");
          wx.navigateBack({
            delta: 1,
          })
        }else{
          wx.showToast({
            title: '保存收货地址失败',
            icon:"none"
          })
        }
    }).catch((err)=>{
        console.log("保存收货地址异常:",err);
        wx.showToast({
          title: '保存收货地址失败',
          icon:'none'
        })
    })
  },
  /**
   * 删除收货地址
   */
  handleDelete() {
    console.log("要删除的收货地址id:",this.data.addressItem.id);
    deleteAddress(this.data.addressItem.id).then((res)=>{
      console.log("删除收货地址结果:",res);
      if (res.code===2000) {
        console.log("删除收货地址成功!");
        wx.navigateBack({
          delta: 1,
        })
      }else{
        console.log("删除收货地址失败-------");
        wx.showToast({
          title: '删除收货地址失败,请稍后重试',
          icon:'none'
        })
      }
    }).catch((err)=>{
        console.log("删除收货地址失败+++++++:",err);
        wx.showToast({
          title: '删除收货地址失败,请稍后重试',
          icon:'none'
        })
    })
  }
})